package duppentity;

import com.google.gson.JsonObject;
import duppentity.annotations.Dupp;
import duppentity.annotations.Param;
import duppentity.dto.Result;

import java.util.List;


/**
 * @author yangzhi
 * @date 2018/5/28
 */
public interface UserDupp {


	/**
	 * 登陆接口
	 * @param account
	 * @param pw
	 * @return
	 */
	@Dupp("sysAdmin.loginByPassword")
	JsonObject loginByPassword(@Param("account") String account,
	                                              @Param("pw") String pw);



	@Dupp("sysAdmin.updatePassword")
	JsonObject updatePassword(@Param("id")Long id,
                                                  @Param("pw")String pw,
                                                  @Param("newPw")String newPw,
                                                  @Param("modifyBy")Long modifyBy);

	/**
	 * 用户手机号
	 * @param mobile
	 * @return
	 */
	@Dupp("kfbkUser.getByMobile")
	JsonObject getkfbkUserByMobile(@Param("mobile")String mobile);

	/**
	 * 发送短信模板
	 * @param mobile
	 * @param templateId
	 * @return
	 */
	@Dupp("mng.notice.sms.create")
	JsonObject createSms(@Param("mobile")String mobile,
						 @Param("templateId")Integer templateId,
						 @Param("content")String content);

    /**
     *  后台账号管理
     */
    @Dupp("mng.sysAdmin.getList")
    JsonObject getUserList(@Param("type") Integer type,
						                 @Param("name") String name,
						                 @Param("mobile") String mobile,
						                 @Param("stationId") Long stationId,
						                 @Param("stationName") String stationName,
    		                             @Param("offset") Integer offset,
                                         @Param("count") Integer count);


    @Dupp("sysAdmin.create")
    JsonObject createUser(@Param("type") Integer type,
    		                            @Param("account") String account,
						                 @Param("pw") String pw,
						                 @Param("mobile") String mobile,
                                         @Param("name") String name,
                                         @Param("roleId") Long roleId,
                                         @Param("stationIds") List<Long> stationIds,
                                         @Param("createBy") Long createBy);

    @Dupp("sysAdmin.delete")
    JsonObject deleteUser(@Param("id") Long id,
                          @Param("modifyBy") Long modifyBy);

    @Dupp("sysAdmin.update")
    JsonObject updateUser(@Param("id") Long id,
										  @Param("name") String name,
						                  @Param("roleId") Long roleId,
						                  @Param("stationIds") List<Long> stationIds,
										  @Param("modifyBy") Long modifyBy);

    @Dupp("sysAdmin.get")
    JsonObject getUser(@Param("id") Long id);

	/**
	 * 删除用户账号和站点的关联
	 */
	@Dupp("sysAdminStation.delete")
	JsonObject deleteAdminStation(@Param("id") Long id,
						                               @Param("modifyBy") Long modifyBy);


	/**
	 * 洗车订单列表
	 * @param mobile
	 * @param license
	 * @param orderNo
	 * @param userId
	 * @param status
	 * @param refundStatus
	 * @return
	 */
	@Dupp("mng.userOrder.getList")
	JsonObject getUserOrderList(@Param("mobile") String mobile,
								@Param("license") String license,
								@Param("orderNo") String orderNo,
								@Param("userId") Long userId,
								@Param("status") Integer status,
								@Param("refundStatus") Integer refundStatus,
								@Param("adminUserId")Long adminUserId,
								@Param("offset") Integer offset,
								@Param("count") Integer count
								);

	/**
	 * 获取洗车订单
	 * @param id
	 * @return
	 */
	@Dupp("userOrder.get")
	JsonObject getUserOrder(@Param("id") Long id,@Param("userId") Long userId);

	/**
	 * 修改退款审核状态
	 * @param id
	 * @param userId
	 * @param audit 退款审核：1同意退款，2拒绝退款
	 * @return
	 */
	@Dupp("userOrder.refundAudit")
	JsonObject saveUserOrder(@Param("id") Long id,
							 @Param("sessionId")String sessionId,
							 @Param("userId") Long userId,
							 @Param("orderUserId") Long orderUserId,
							 @Param("audit") Integer audit,
							 @Param("modifyBy") Long modifyBy);

	/**
	 * 洗车用户列表
	 */
	@Dupp("mng.userInfo.getList")
	JsonObject getUserInfoList(@Param("id") Long id,
											   @Param("mobile") String mobile,
								               @Param("offset") Integer offset,
								               @Param("count") Integer count);

	@Dupp("userInfo.get")
    JsonObject getSaccUser(@Param("id") Long id);

	@Dupp("userInfo.update")
	JsonObject updateSaccUser(@Param("id") Long id,
                                                @Param("mobile") String mobile,
                                                @Param("bindThirdFlag") Long bindThirdFlag,
                                                @Param("bindThirdDb") Long bindThirdDb,
                                                @Param("washCount") Integer washCount,
                                                @Param("amountRemain") Integer amountRemain,
                                                @Param("amountConsume") Integer amountConsume,
                                                @Param("lastStationId") Long lastStationId,
                                                @Param("lastWashTime") Long lastWashTime,
                                                @Param("regeditTime") Long regeditTime,
                                                @Param("modifyBy") Long modifyBy);
}
